import { useUserStore } from '~/store/useUser'

/**
 * 登录验证中间件
 * 用于保护需要登录才能访问的页面
 */
export default defineNuxtRouteMiddleware((to, from) => {
  const userStore = useUserStore()
  
  // 在客户端执行登录检查
  if (process.client) {
    console.log('Auth middleware: 检查登录状态')
    console.log('Auth middleware: isLogin =', userStore.isLogin)
    console.log('Auth middleware: token =', userStore.getToken)
    
    // 如果用户未登录，重定向到登录页
    if (!userStore.isLogin) {
      console.log('Auth middleware: 用户未登录，重定向到登录页')
      ElMessage.warning('请先登录')
      return navigateTo('/login')
    }
    
    // 如果有token但没有用户信息，尝试获取用户信息
    if (userStore.isLogin && (!userStore.getUserInfo || Object.keys(userStore.getUserInfo).length === 0)) {
      console.log('Auth middleware: 有token但缺少用户信息，尝试获取')
      // 这里不阻塞路由，让用户信息在后台获取
      userStore.userInfoAction().catch(error => {
        console.error('Auth middleware: 获取用户信息失败', error)
        // 如果获取用户信息失败，可能token已过期，重定向到登录页
        ElMessage.error('登录状态已过期，请重新登录')
        return navigateTo('/login')
      })
    }
  }
})